 <?php

class UploadComponent extends Component{
	
	var $size;
	var $type;
	
	function initialize(){
		
	}
	function startup(){
		
	}
	function shutdown(){
		
	}
	function beforeRender(){
		
	}
	
	private function tamanho($tamanho){
		if($this->size < $tamanho){
			return false;
		}
		return true;
	}
	
	private function tipo($tipo){
		
		if(!in_array($tipo, $this->type)){
			return false;
		}
		return true;
	}
	
	private function validacaoUnitaria($arquivo){
		if ((isset($arquivo['error']) && $arquivo['error'] != 0) ||
			(!empty( $arquivo['tmp_name']) && $arquivo['tmp_name'] == 'none')) {
				return __('file_erro_comum');
			}
			if(!$this->tipo($arquivo['type']))
				return __('file_erro_tamanho');
	
			if(!$this->tamanho($arquivo['size']))
				return __('file_erro_tipo');
			return is_uploaded_file($arquivo['tmp_name']);
	}
	
	/**
	 * $mult é para quando tiver vários arquivos para o upload
	 */
	function validar($arquivo, $mult = false){
		if($mult){
			foreach($arquivo as $item){
				if(!$this->validacaoUnitaria($item))
					return false;
			}
			return true;
		}
		else{
			return $this->validacaoUnitaria($arquivo);
		}	
	}
	private function criar_diretorio($diretorio, $pasta){
		if(!file_exists($diretorio.DS.$pasta)){
			$subpastas = explode(DS, $pasta);
			foreach ($subpastas as $item) {
				mkdir($diretorio.DS.$item);
				$diretorio .= DS.$item;
			}
		}
	}
	
	
	
	function armazenar($pasta, $arquivo, $mult = false){
		$diretorio = APP.'webroot'.DS; 
		$this->criar_diretorio($diretorio, $pasta);
		$dest_dir = $diretorio.$pasta;
		if($mult){
			$i = 1;
			foreach ($arquivo as $item){
				if($item['name'])
					if(!move_uploaded_file($item['tmp_name'], $dest_dir.DS.'foto'.$i.'.png')){
						return false;
					}
				$i++;
			}
			return true;
		}
		else{
			if(move_uploaded_file($arquivo['tmp_name'], $dest_dir.DS.$arquivo['name']))
				return true;
			else return false;
		}
	}
	
	function apagarArquivo($arquivo){
		return unlink($arquivo);
	}
	
}